import axios from "axios";
import store from "../store/index"

const baseUrl = "http://127.0.0.1:8022/"

// 创建axios实例
const service = axios.create({
    baseURL: baseUrl, // api的base_url
    timeout: 6000 // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(config => {
    // 添加请求头
    // 在发送请求前做些什么
    if (store.getters.GET_TOKEN) {
        console.log("进入了请求拦截器.......")
        // 设置请求头
        if (config.url != "/login") {
            config.headers['token'] = store.getters.GET_TOKEN; // 替换为你的认证令牌
        }
    }
    return config;
}, error => {
    // 请求错误处理
    console.log(error);
    Promise.reject(error);
})

// 响应拦截器
service.interceptors.response.use(response => {
    const data = response.data
    return data;
}, error => {
    console.log("err=>" + error)
    return Promise.reject(error)
})


const http = {
    /*
    * get 请求
    * url: 请求地址
    * param: 请求参数
    * */
    get(url, params = {}) {
        return new Promise((resolve, reject) => {
            service({
                url: url,
                method: 'get',
                params: params
            }).then(response => {
                resolve(response);
            }).catch(error => {
                reject(error)
            })
        })
    },
    /*
    * post 请求
    * url: 请求地址
    * param: 请求参数
    * */
    post(url, params = {}) {
        return new Promise((resolve, reject) => {
            service({
                url: url,
                method: 'post',
                data: params
            }).then(response => {
                console.log(response)
                resolve(response);
            }).catch(error => {
                console.log(error)
                reject(error)
            })
        })
    },
    /*
    * 文件上传
    * */
    fileUpload(url, params = {}) {
        return new Promise((resolve, reject) => {
            service({
                url: url,
                method: 'post',
                params: params,
                header: {'Content-Type': 'multipart/form-data'}
            }).then(response => {
                resolve(response);
            }).catch(error => {
                reject(error)
            })
        })
    },
    getServerUrl() {
        return baseUrl;
    }
}

export default {
    service,
    http
}